home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / workbench werkzeuge / uhren & terminkalender / time / tolleuhr / tolleuhr_asm / source / tolleuhr.020.s.diff next >
Text File  |  1996-04-07  |  13KB  |  577 lines

  1. *** normal.s    Fri Nov 17 20:10:13 1995
  2. --- tolleuhr.s    Fri Nov 17 20:13:32 1995
  3. ***************
  4. *** 14,19 ****
  5. --- 14,27 ----
  6.   
  7.   ***************************************************************************
  8.   
  9. +         IFD    _PHXASS_
  10. +         machine    68020
  11. +         ENDC
  12. +         IFD    SNMA
  13. +         mc68020
  14. +         ENDC
  15.   ; include stuff
  16.   
  17.           include    exec/types.i
  18. ***************
  19. *** 226,233 ****
  20.           lea    92(a2),a0
  21.           RECALL    GetMsg
  22.           move.l    d0,WbMsg(bp)
  23. ! fromCLI        bsr    main            ; call main
  24. !         move.l    WbMsg(bp),d2
  25.           beq.s    1$
  26.           RECALL    Forbid
  27.           move.l    d2,a1
  28. --- 234,243 ----
  29.           lea    92(a2),a0
  30.           RECALL    GetMsg
  31.           move.l    d0,WbMsg(bp)
  32. ! fromCLI        btst    #1,297(a6)
  33. !         beq.s    2$
  34. !         bsr    main            ; call main
  35. ! 2$        move.l    WbMsg(bp),d2
  36.           beq.s    1$
  37.           RECALL    Forbid
  38.           move.l    d2,a1
  39. ***************
  40. *** 361,368 ****
  41.           moveq    #ItemCount-1,d2
  42.   4$        move.b    (a2)+,0(a3)        ; type
  43.           move.b    (a2)+,d0
  44. !         ext.w    d0
  45. !         ext.l    d0
  46.           bmi.s    3$
  47.           bsr    GetLocStr        ; get localized string
  48.   3$        move.l    d0,2(a3)
  49. --- 371,377 ----
  50.           moveq    #ItemCount-1,d2
  51.   4$        move.b    (a2)+,0(a3)        ; type
  52.           move.b    (a2)+,d0
  53. !         extb.l    d0
  54.           bmi.s    3$
  55.           bsr    GetLocStr        ; get localized string
  56.   3$        move.l    d0,2(a3)
  57. ***************
  58. *** 881,900 ****
  59.           beq.s    1$
  60.   6$        moveq    #$40,d0            ; while (!CTRL-C && !EndAll) {
  61.           lsl.w    #6,d0
  62. !         move.l    WinPort(bp),a1
  63. !         move.b    15(a1),d1
  64.           bset    d1,d0
  65. !         move.l    TimerPort(bp),a1
  66. !         move.b    15(a1),d1
  67.           bset    d1,d0
  68. !         move.l    AudioPort(bp),a1
  69. !         move.b    15(a1),d1
  70.           bset    d1,d0
  71.           move.l    AboutReq(bp),d1
  72.           beq.s    5$            ; no about requester
  73. !         move.l    d1,a1
  74. !         move.l    86(a1),a1
  75. !         move.b    15(a1),d1
  76.           bset    d1,d0
  77.   5$        CALL    Wait,SysBase(bp)
  78.           btst    #12,d0            ; CTRL-C ?
  79. --- 890,904 ----
  80.           beq.s    1$
  81.   6$        moveq    #$40,d0            ; while (!CTRL-C && !EndAll) {
  82.           lsl.w    #6,d0
  83. !         move.b    ([WinPort,bp],15),d1
  84.           bset    d1,d0
  85. !         move.b    ([TimerPort,bp],15),d1
  86.           bset    d1,d0
  87. !         move.b    ([AudioPort,bp],15),d1
  88.           bset    d1,d0
  89.           move.l    AboutReq(bp),d1
  90.           beq.s    5$            ; no about requester
  91. !          move.b    ([86,d1.l],15),d1
  92.           bset    d1,d0
  93.   5$        CALL    Wait,SysBase(bp)
  94.           btst    #12,d0            ; CTRL-C ?
  95. ***************
  96. *** 1237,1244 ****
  97.           moveq    #$40,d0            ; GADGETUP
  98.           cmp.l    d0,d2
  99.           bne.s    1$
  100. !         move.l    color(bp),a0
  101. !         move.b    d3,0(a0)        ; set new color
  102.           bsr    SetPattern
  103.           bsr    Rahmen
  104.           bsr    ZifferBlatt
  105. --- 1241,1247 ----
  106.           moveq    #$40,d0            ; GADGETUP
  107.           cmp.l    d0,d2
  108.           bne.s    1$
  109. !         move.b    d3,([color,bp])        ; set new color
  110.           bsr    SetPattern
  111.           bsr    Rahmen
  112.           bsr    ZifferBlatt
  113. ***************
  114. *** 1256,1263 ****
  115.           cmp.l    d1,d2
  116.           beq.s    msgRefresh        ; CASE REFRESHWINDOW
  117.           moveq    #($100>>2),d1
  118. !         add.w    d1,d1
  119. !         add.w    d1,d1
  120.           cmp.l    d1,d2
  121.           beq.s    msgMenuPick        ; CASE MENUPICK
  122.           add.l    d1,d1
  123. --- 1259,1265 ----
  124.           cmp.l    d1,d2
  125.           beq.s    msgRefresh        ; CASE REFRESHWINDOW
  126.           moveq    #($100>>2),d1
  127. !         lsl.w    #2,d1
  128.           cmp.l    d1,d2
  129.           beq.s    msgMenuPick        ; CASE MENUPICK
  130.           add.l    d1,d1
  131. ***************
  132. *** 1327,1340 ****
  133.           move.w    32(a2),d3
  134.           moveq    #$1f,d0
  135.           and.w    d2,d0            ; MENUNUM
  136. -         add.w    d0,d0            ; now index !
  137.           move.w    d2,d1
  138.           lsr.w    #5,d1
  139.           andi.w    #$3f,d1            ; ITEMNUM
  140.           lsr.w    #8,d2
  141.           lsr.w    #3,d2
  142.           andi.w    #$1f,d2            ; SUBNUM
  143. !         move.w    menuTab(pc,d0.w),d0
  144.           jsr    menuTab(pc,d0.w)    ; execute CASE
  145.           bsr    msgNewSize
  146.           bne.s    msgMenuPick        ; no error !
  147. --- 1329,1341 ----
  148.           move.w    32(a2),d3
  149.           moveq    #$1f,d0
  150.           and.w    d2,d0            ; MENUNUM
  151.           move.w    d2,d1
  152.           lsr.w    #5,d1
  153.           andi.w    #$3f,d1            ; ITEMNUM
  154.           lsr.w    #8,d2
  155.           lsr.w    #3,d2
  156.           andi.w    #$1f,d2            ; SUBNUM
  157. !         move.w    menuTab(pc,d0.w*2),d0
  158.           jsr    menuTab(pc,d0.w)    ; execute CASE
  159.           bsr    msgNewSize
  160.           bne.s    msgMenuPick        ; no error !
  161. ***************
  162. *** 1347,1354 ****
  163.   
  164.   ;--------------------------------------------------------------------------
  165.   
  166. ! menuProject    add.w    d1,d1            ; now index !
  167. !         move.w    projectTab(pc,d1.w),d1
  168.           jmp    projectTab(pc,d1.w)
  169.   
  170.   projectTab    ADDCMD    project,About,0
  171. --- 1348,1354 ----
  172.   
  173.   ;--------------------------------------------------------------------------
  174.   
  175. ! menuProject    move.w    projectTab(pc,d1.w*2),d1
  176.           jmp    projectTab(pc,d1.w)
  177.   
  178.   projectTab    ADDCMD    project,About,0
  179. ***************
  180. *** 1381,1388 ****
  181.   
  182.   ;--------------------------------------------------------------------------
  183.   
  184. ! menuSettings    add.w    d1,d1            ; now index !
  185. !         move.w    settingsTab(pc,d1.w),d1
  186.           moveq    #1,d0
  187.           and.b    12(a2),d0        ; checked=item.Flags&CHECKED;
  188.           jmp    settingsTab(pc,d1.w)
  189. --- 1381,1387 ----
  190.   
  191.   ;--------------------------------------------------------------------------
  192.   
  193. ! menuSettings    move.w    settingsTab(pc,d1.w*2),d1
  194.           moveq    #1,d0
  195.           and.b    12(a2),d0        ; checked=item.Flags&CHECKED;
  196.           jmp    settingsTab(pc,d1.w)
  197. ***************
  198. *** 1633,1640 ****
  199.   10$        lea    RPort2(bp),a1
  200.           CALL    InitRastPort,GfxBase(bp)
  201.           moveq    #0,d0
  202. !         move.l    PubScreen(bp),a0
  203. !         move.b    189(a0),d0        ; BitMap.Depth
  204.           move.l    Breit2(bp),d1
  205.           move.l    Hoehe2(bp),d2
  206.           lea    BitMap1(bp),a0
  207. --- 1632,1638 ----
  208.   10$        lea    RPort2(bp),a1
  209.           CALL    InitRastPort,GfxBase(bp)
  210.           moveq    #0,d0
  211. !         move.b    ([PubScreen,bp],189),d0    ; BitMap.Depth
  212.           move.l    Breit2(bp),d1
  213.           move.l    Hoehe2(bp),d2
  214.           lea    BitMap1(bp),a0
  215. ***************
  216. *** 1689,1695 ****
  217.           bne.s    1$
  218.           move.l    d2,d0
  219.           moveq    #60,d1
  220. !         bsr    LDiv            ; sec = 59-sec%60
  221.           moveq    #59,d0
  222.           sub.l    d1,d0
  223.   1$        move.l    d0,32(a2)        ; tv_secs
  224. --- 1687,1693 ----
  225.           bne.s    1$
  226.           move.l    d2,d0
  227.           moveq    #60,d1
  228. !         divul.l    d1,d1:d0        ; sec = 59-sec%60
  229.           moveq    #59,d0
  230.           sub.l    d1,d0
  231.   1$        move.l    d0,32(a2)        ; tv_secs
  232. ***************
  233. *** 1700,1721 ****
  234.           move.w    min(bp),d4        ; oldmin
  235.           move.l    d2,d0
  236.           moveq    #60,d1
  237. !         bsr    LDiv            ; min = sec/60
  238.           exg.l    d0,d2
  239.           moveq    #60,d1
  240. !         bsr    LDiv            ; sec = sec%60
  241.           move.w    d1,sec(bp)
  242.           move.l    d2,d0
  243.           moveq    #12,d1
  244. !         bsr    LDiv            ; std = min/12
  245.           move.l    d0,d3
  246.           move.l    d2,d0
  247.           moveq    #60,d1
  248. !         bsr    LDiv            ; min = min%60
  249.           move.w    d1,min(bp)
  250.           move.l    d3,d0
  251.           moveq    #60,d1
  252. !         bsr    LDiv            ; std = std%60
  253.           move.w    d1,std(bp)
  254.           move.w    min(bp),d0
  255.           sub.w    d4,d0            ; oldmin != min
  256. --- 1698,1719 ----
  257.           move.w    min(bp),d4        ; oldmin
  258.           move.l    d2,d0
  259.           moveq    #60,d1
  260. !         divul.l    d1,d1:d0        ; min = sec/60
  261.           exg.l    d0,d2
  262.           moveq    #60,d1
  263. !         divul.l    d1,d1:d0        ; sec = sec%60
  264.           move.w    d1,sec(bp)
  265.           move.l    d2,d0
  266.           moveq    #12,d1
  267. !         divul.l    d1,d1:d0        ; std = min/12
  268.           move.l    d0,d3
  269.           move.l    d2,d0
  270.           moveq    #60,d1
  271. !         divul.l    d1,d1:d0        ; min = min%60
  272.           move.w    d1,min(bp)
  273.           move.l    d3,d0
  274.           moveq    #60,d1
  275. !         divul.l    d1,d1:d0        ; std = std%60
  276.           move.w    d1,std(bp)
  277.           move.w    min(bp),d0
  278.           sub.w    d4,d0            ; oldmin != min
  279. ***************
  280. *** 1724,1731 ****
  281.   
  282.   ;--------------------------------------------------------------------------
  283.   
  284. ! SetAPen        ext.w    d0            ; set pen
  285. !         ext.l    d0
  286.           move.l    a2,a1
  287.           jmp    _LVOSetAPen(a6)
  288.   
  289. --- 1722,1728 ----
  290.   
  291.   ;--------------------------------------------------------------------------
  292.   
  293. ! SetAPen        extb.l    d0            ; set pen
  294.           move.l    a2,a1
  295.           jmp    _LVOSetAPen(a6)
  296.   
  297. ***************
  298. *** 1932,1943 ****
  299.   6$        move.l    d4,d0
  300.           moveq    #100,d1
  301.           add.w    d1,d1
  302. !         bsr    LDiv
  303.           move.l    d0,0(sp)        ; Breit2/200
  304.           move.l    d5,d0
  305.           moveq    #100,d1
  306.           add.w    d1,d1
  307. !         bsr    LDiv
  308.           move.l    d0,4(sp)        ; Hoehe2/200
  309.           move.l    d2,d0
  310.           add.l    0(sp),d0
  311. --- 1929,1940 ----
  312.   6$        move.l    d4,d0
  313.           moveq    #100,d1
  314.           add.w    d1,d1
  315. !         divul.l    d1,d1:d0
  316.           move.l    d0,0(sp)        ; Breit2/200
  317.           move.l    d5,d0
  318.           moveq    #100,d1
  319.           add.w    d1,d1
  320. !         divul.l    d1,d1:d0
  321.           move.l    d0,4(sp)        ; Hoehe2/200
  322.           move.l    d2,d0
  323.           add.l    0(sp),d0
  324. ***************
  325. *** 1957,1968 ****
  326.           bsr    AreaDraw
  327.           bra.s    4$
  328.   5$        swap    d0            ; else { draw hour }
  329. !         lea    dx1(pc),a3
  330. !         lea    0(a3,d0.w),a3        ; calc table entry
  331. !         lea    pent(pc),a0
  332. !         move.b    0(a0,d0.w),d0
  333. !         lea    Pens(bp),a0
  334. !         move.b    0(a0,d0.w),d0
  335.           bsr    SetPens            ; set apen + open
  336.           bsr    MoveHour
  337.           bsr    DrawHour
  338. --- 1954,1962 ----
  339.           bsr    AreaDraw
  340.           bra.s    4$
  341.   5$        swap    d0            ; else { draw hour }
  342. !         lea    (dx1,pc,d0.w),a3
  343. !         move.b    (pent,pc,d0.w),d0
  344. !         move.b    (Pens,bp,d0.w),d0
  345.           bsr    SetPens            ; set apen + open
  346.           bsr    MoveHour
  347.           bsr    DrawHour
  348. ***************
  349. *** 2047,2054 ****
  350.   
  351.   SetOPen        cmpi.w    #39,20(a6)        ; SetOPen v39+
  352.           bcs.s    1$
  353. !         ext.w    d0
  354. !         ext.l    d0
  355.           move.l    a2,a0
  356.           jmp    _LVOSetOutlinePen(a6)
  357.   1$        move.b    d0,27(a2)        ; SetOPen pre v39+
  358. --- 2041,2047 ----
  359.   
  360.   SetOPen        cmpi.w    #39,20(a6)        ; SetOPen v39+
  361.           bcs.s    1$
  362. !         extb.l    d0
  363.           move.l    a2,a0
  364.           jmp    _LVOSetOutlinePen(a6)
  365.   1$        move.b    d0,27(a2)        ; SetOPen pre v39+
  366. ***************
  367. *** 2064,2074 ****
  368.           lea    RPort2(bp),a2
  369.           move.l    Breit2(bp),d2
  370.           move.l    Hoehe2(bp),d3
  371. -         lea    handwidth(pc),a1
  372.           moveq    #0,d1
  373.           move.b    zeigerbreite(bp),d1
  374. !         add.w    d1,d1
  375. !         move.w    0(a1,d1.w),d1
  376.           lea    sinus(pc),a0
  377.           adda.w    0(a3),a0
  378.           move.b    60(a0),d7        ; y2
  379. --- 2057,2065 ----
  380.           lea    RPort2(bp),a2
  381.           move.l    Breit2(bp),d2
  382.           move.l    Hoehe2(bp),d3
  383.           moveq    #0,d1
  384.           move.b    zeigerbreite(bp),d1
  385. !         move.w    (handwidth,pc,d1.w*2),d1
  386.           lea    sinus(pc),a0
  387.           adda.w    0(a3),a0
  388.           move.b    60(a0),d7        ; y2
  389. ***************
  390. *** 2109,2116 ****
  391.           move.b    zeigertyp(bp),d0
  392.           beq.s    1$
  393.           pea    AreaEnd(pc)        ; last area cmd
  394. !         add.w    d0,d0
  395. ! 1$        move.w    ZeigerTab(pc,d0.w),d0
  396.           jmp    ZeigerTab(pc,d0.w)
  397.   
  398.   ZeigerTab    ADDCMD    Zeiger,0,0        ; case line
  399. --- 2100,2106 ----
  400.           move.b    zeigertyp(bp),d0
  401.           beq.s    1$
  402.           pea    AreaEnd(pc)        ; last area cmd
  403. ! 1$        move.w    ZeigerTab(pc,d0.w*2),d0
  404.           jmp    ZeigerTab(pc,d0.w)
  405.   
  406.   ZeigerTab    ADDCMD    Zeiger,0,0        ; case line
  407. ***************
  408. *** 2440,2453 ****
  409.           subq.w    #4,a2            ; ttypes[k]
  410.           move.l    d5,a3            ; buffer for sprintf
  411.           moveq    #0,d0            ; TOP
  412. -         move.l    WinPtr(bp),a1
  413.           moveq    #0,d1
  414. !         move.w    6(a1),d1        ; window->TopEdge
  415.           bsr    SetToolType
  416.           moveq    #1,d0            ; LEFT
  417. -         move.l    WinPtr(bp),a1
  418.           moveq    #0,d1
  419. !         move.w    4(a1),d1        ; window->LeftEdge
  420.           bsr    SetToolType
  421.           moveq    #2,d0            ; WIDTH
  422.           move.l    Breite(bp),d1
  423. --- 2430,2441 ----
  424.           subq.w    #4,a2            ; ttypes[k]
  425.           move.l    d5,a3            ; buffer for sprintf
  426.           moveq    #0,d0            ; TOP
  427.           moveq    #0,d1
  428. !         move.w    ([WinPtr,bp],6),d1    ; window->TopEdge
  429.           bsr    SetToolType
  430.           moveq    #1,d0            ; LEFT
  431.           moveq    #0,d1
  432. !         move.w    ([WinPtr,bp],4),d1    ; window->LeftEdge
  433.           bsr    SetToolType
  434.           moveq    #2,d0            ; WIDTH
  435.           move.l    Breite(bp),d1
  436. ***************
  437. *** 2553,2560 ****
  438.           rts
  439.   
  440.   GetToolType    lea    tt_Tab(pc),a0        ; get ptr to tooltype
  441. !         add.w    d0,d0
  442. !         adda.w    0(a0,d0.w),a0
  443.           rts
  444.   
  445.   SetStr        move.l    -4(a2),a3        ; make a string
  446. --- 2541,2547 ----
  447.           rts
  448.   
  449.   GetToolType    lea    tt_Tab(pc),a0        ; get ptr to tooltype
  450. !         adda.w    0(a0,d0.w*2),a0
  451.           rts
  452.   
  453.   SetStr        move.l    -4(a2),a3        ; make a string
  454. ***************
  455. *** 2612,2619 ****
  456.           tst.b    smarthour(bp)
  457.           beq.s    3$
  458.           moveq    #24*2,d0
  459. !         add.w    d3,d3
  460. !         add.w    d3,d3
  461.           sub.w    d3,d0
  462.           bra.s    3$
  463.   ; if (chime==2 && (min==15 || min==30 || min==45))
  464. --- 2599,2605 ----
  465.           tst.b    smarthour(bp)
  466.           beq.s    3$
  467.           moveq    #24*2,d0
  468. !         lsl.w    #2,d3
  469.           sub.w    d3,d0
  470.           bra.s    3$
  471.   ; if (chime==2 && (min==15 || min==30 || min==45))
  472. ***************
  473. *** 2689,2696 ****
  474.           bsr.s    EndTune            ; free channels
  475.   3$        bra.s    1$
  476.   2$        st    0(a1,d1.w)        ; audsent[reqnr]=1;
  477. !         add.w    d1,d1
  478. !         add.w    d1,d1
  479.           lea    AudioIO+0(bp),a1
  480.           move.l    0(a1,d1.w),a1
  481.           move.w    #3,28(a1)        ; io_Command = CMD_WRITE;
  482. --- 2675,2681 ----
  483.           bsr.s    EndTune            ; free channels
  484.   3$        bra.s    1$
  485.   2$        st    0(a1,d1.w)        ; audsent[reqnr]=1;
  486. !         lsl.w    #2,d1
  487.           lea    AudioIO+0(bp),a1
  488.           move.l    0(a1,d1.w),a1
  489.           move.w    #3,28(a1)        ; io_Command = CMD_WRITE;
  490. ***************
  491. *** 2744,2751 ****
  492.           clr.w    NewGad+16(bp)        ; clear gadget id
  493.           move.b    (a3)+,d4        ; gadget counter
  494.   4$        lea    NewGad(bp),a2        ; structure to fill
  495. !         move.l    WinPtr(bp),a0
  496. !         move.l    46(a0),a0        ; screen
  497.           moveq    #0,d0            ; LeftEdge
  498.           move.b    (a3)+,d0
  499.           add.b    36(a0),d0        ; screen->WBorLeft;
  500. --- 2729,2735 ----
  501.           clr.w    NewGad+16(bp)        ; clear gadget id
  502.           move.b    (a3)+,d4        ; gadget counter
  503.   4$        lea    NewGad(bp),a2        ; structure to fill
  504. !         move.l    ([WinPtr,bp],46),a0    ; screen
  505.           moveq    #0,d0            ; LeftEdge
  506.           move.b    (a3)+,d0
  507.           add.b    36(a0),d0        ; screen->WBorLeft;
  508. ***************
  509. *** 2816,2824 ****
  510.   
  511.   GetLocStr    move.l    a6,-(sp)        ; get localized string
  512.           lea    LocaleTab(pc),a1
  513. !         add.w    d0,d0
  514. !         add.w    0(a1,d0.w),a1        ; default !
  515. !         lsr.w    #1,d0
  516.           move.l    Catalog(bp),d1
  517.           beq.s    1$            ; no catalog !
  518.           move.l    d1,a0
  519. --- 2800,2806 ----
  520.   
  521.   GetLocStr    move.l    a6,-(sp)        ; get localized string
  522.           lea    LocaleTab(pc),a1
  523. !         add.w    0(a1,d0.w*2),a1        ; default !
  524.           move.l    Catalog(bp),d1
  525.           beq.s    1$            ; no catalog !
  526.           move.l    d1,a0
  527. ***************
  528. *** 2913,2940 ****
  529.   
  530.   ***************************************************************************
  531.   
  532. - ; 32-bit division (only positive values!)
  533. - LDiv        move.l    d3,-(sp)
  534. -         move.l    d2,-(sp)
  535. -         move.w    d1,d3
  536. -         move.w    d0,d2
  537. -         clr.w    d0
  538. -         swap    d0
  539. -         divu.w    d3,d0
  540. -         move.l    d0,d1
  541. -         swap    d0
  542. -         move.w    d2,d1
  543. -         divu.w    d3,d1
  544. -         move.w    d1,d0
  545. -         clr.w    d1
  546. -         swap    d1
  547. -         move.l    (sp)+,d2
  548. -         move.l    (sp)+,d3
  549. -         rts
  550. - ***************************************************************************
  551.   ; static data
  552.   
  553.   GadgetList    dc.b    $03,$80            ; GTYP_CLOSE
  554. --- 2895,2900 ----
  555. ***************
  556. *** 3253,3259 ****
  557.   linefeed    dc.b    10,0
  558.   
  559.           dc.b    '$VER: '
  560. ! ProgName    dc.b    'TolleUhr 1.3 (18.5.95) by M.Fleischer and G.Nikl in 1993/95',0
  561.   
  562.   fmt1        dc.b    '%s=%ld',0        ; format templates for tooltypes
  563.   fmt2        dc.b    '%s',0
  564. --- 3213,3219 ----
  565.   linefeed    dc.b    10,0
  566.   
  567.           dc.b    '$VER: '
  568. ! ProgName    dc.b    'TolleUhr [020] 1.3 (18.5.95) by M.Fleischer and G.Nikl in 1993/95',0
  569.   
  570.   fmt1        dc.b    '%s=%ld',0        ; format templates for tooltypes
  571.   fmt2        dc.b    '%s',0
  572.